package fachada;

import javax.naming.CommunicationException;

import util.RepositorioException;
import contas.Conta;
import exceptions.ContaJaCadastradaException;
import exceptions.ContaNaoEncontradaException;
import exceptions.SaldoInsuficienteException;

public interface IBanco {

	public void cadastrar(Conta conta) throws CommunicationException, RepositorioException, ContaJaCadastradaException;

	public void creditar(String numero, double valor)
			throws CommunicationException, RepositorioException, ContaNaoEncontradaException;

	public void debitar(String numero, double valor)
			throws CommunicationException, RepositorioException, ContaNaoEncontradaException, SaldoInsuficienteException;

	public void transferir(String numeroDe, String numeroPara, double valor)
			throws CommunicationException, RepositorioException, ContaNaoEncontradaException, SaldoInsuficienteException;

	public double saldo(String numero) throws CommunicationException, RepositorioException, ContaNaoEncontradaException;

	public void remover(String numero) throws CommunicationException, RepositorioException, ContaNaoEncontradaException;

	public boolean existe(String numero) throws CommunicationException, RepositorioException;

	public Conta procurar(String numero) throws CommunicationException, RepositorioException, ContaNaoEncontradaException;

	public void atualizar(Conta conta) throws CommunicationException, RepositorioException, ContaNaoEncontradaException;

}